const momentService = require("../service/moment.service");

class MomentController {
    async create(ctx, next) {
        // 1. 获取发布的动态内容
        const { content } = ctx.request.body;
        // 2. 动态是谁发布 => 谁登录谁发布 => 通过token => id,name
        const { id } = ctx.user;
        // console.log(id, content);
        // 3. 将动态相关的信息保存到数据库中
        const result = await momentService.create(content, id)
        ctx.body = {
            code: 0,
            message: '创建用户动态成功',
            data: result
        }
    }
    async getList(ctx, next) {
        // offset size
        const { offset, size } = ctx.query
        //从数据库中查询动态列表
        const result = await momentService.queryMomentList(offset, size)

        ctx.body = {
            code: 0,
            data: result
        }
    }
    async detail(ctx, next) {
        // 1. 获取动态id
        const { momentId } = ctx.params;
        // 2.查询数据库 根据id查询
        const result = await momentService.queryById(momentId)
        // 3. 返回客户端
        ctx.body = {
            code: 0,
            data: result[0]
        }
    }
    async update(ctx, next) {
        // 1. 获取需要修改的动态id
        const { momentId } = ctx.params;
        // 2. 需要修改的内容
        const { content } = ctx.request.body;
        // 3. 修改数据库中的内容
        const result = await momentService.update(momentId, content);
        // 3. 返回客户端
        ctx.body = {
            code: 0,
            message: '修改动态成功～',
            data: result
        }
    }

    async remove(ctx, next) {
        // 1. 获取动态id
        const { momentId } = ctx.params;
        // 2. 查询数据库进行操作
        const result = momentService.remove(momentId)

        ctx.body = {
            code: 0,
            message: '删除动态成功～',
            data: result
        }
    }

    async addLabels(ctx, next) {
        // 1. 获取参数
        const { labels } = ctx;
        const { momentId } = ctx.params;
        // 2. 将 momentId和labelId添加到 moment_label表中
        try {
            for (const label of labels) {
                // 2.1 判断label_id 是否已经和momentId已经存表中
                const isExists = await momentService.hasLabel(momentId, label.id)
                if (!isExists) {
                    // 如果不存在 momentId和labelId关系
                    const result = await momentService.addLabel(momentId, label.id);

                }
            }

            ctx.body = {
                code: 0,
                message: '给moment添加标签成功！'
            }

        } catch (error) {
            ctx.body = {
                code: -30001,
                message: '给moment添加标签失败！'

            }

        }

    }
}

module.exports = new MomentController()